import os
import sys
import time

CURDIR = os.path.dirname(os.path.realpath(__file__))

sys.path.insert(0, os.path.join(CURDIR))

from . import uexpect

prompt = ":\\) "
end_of_block = r".*\r\n.*\r\n"


class client(object):
    def __init__(self, command=None, name="", log=None):
        self.client = uexpect.spawn(["/bin/bash", "--noediting"])
        if command is None:
            command = "/usr/bin/clickhouse-client"
        self.client.command = command
        self.client.eol("\r")
        self.client.logger(log, prefix=name)
        self.client.timeout(20)
        self.client.expect("[#\\$] ", timeout=2)
        self.client.send(command)

    def __enter__(self):
        return self.client.__enter__()

    def __exit__(self, type, value, traceback):
        self.client.reader["kill_event"].set()
        # send Ctrl-C
        self.client.send("\x03", eol="")
        time.sleep(0.3)
        self.client.send("quit", eol="\r")
        self.client.send("\x03", eol="")
        return self.client.__exit__(type, value, traceback)
